/*
 * JavaScript Templates Demo
 * https://github.com/blueimp/JavaScript-Templates
 *
 * Copyright 2013, Sebastian Tschan
 * https://blueimp.net
 *
 * Licensed under the MIT license:
 * http://www.opensource.org/licenses/MIT
 */

/* global document, tmpl */

(function () {
    'use strict';

    var templateInput = document.getElementById('template');
    var dataInput = document.getElementById('data');
    var resultNode = document.getElementById('result');
    var templateDemoNode = document.getElementById('tmpl-demo');
    var templateDataNode = document.getElementById('tmpl-data');

    function renderError(title, error) {
        resultNode.innerHTML = tmpl(
            'tmpl-error',
            {title: title, error: error}
        );
    }

    function render(event) {
        event.preventDefault();
        var data;
        try {
            data = JSON.parse(dataInput.value);
        } catch (e) {
            renderError('JSON parsing failed', e);
            return;
        }
        try {
            resultNode.innerHTML = tmpl(
                templateInput.value,
                data
            );
        } catch (e) {
            renderError('Template rendering failed', e);
        }
    }

    function empty(node) {
        while (node.lastChild) {
            node.removeChild(node.lastChild);
        }
    }

    function init(event) {
        if (event) {
            event.preventDefault();
        }
        templateInput.value = templateDemoNode.innerHTML.trim();
        dataInput.value = templateDataNode.innerHTML.trim();
        empty(resultNode);
    }

    document.getElementById('render').addEventListener('click', render);
    document.getElementById('reset').addEventListener('click', init);

    init();

}());
